import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Rps extends JFrame
implements ActionListener {
private final char moves[] = {'R', 'P', 'S'};
private JRadioButton rock, paper, scissors;
private JTextField display;
public Rps() {
super("Rock, paper, Scissors");
rock = new JRadioButton(" Rock ", true);
paper = new JRadioButton(" Paper ");
scissors = new JRadioButton(" Scissors ");
ButtonGroup rpsButtons = new ButtonGroup();
rpsButtons.add(rock);
rpsButtons.add(paper);
rpsButtons.add(scissors);
JButton go = new JButton(" Go ");
go.addActionListener(this);
display = new JTextField(25);
display.setEditable(false);
display.setBackground(Color.yellow);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(rock);
c.add(paper);
c.add(scissors);
c.add(go);
c.add(display);
}
/**
* returns -1 if the player wins, 0 if it's a tie, and 1 if the computer
* wins
*/
private int nextPlay(char computerMove, char playerMove) {
switch (computerMove) {
case 'R':
switch (playerMove) {
case 'R':
return 0;
case 'P':
return -1;
case 'S':
return 1;
}
case 'P':
switch (playerMove) {
case 'R':
return 1;
case 'P':
return 0;
case 'S':
return -1;
}
case 'S':
switch (playerMove) {
case 'R':
return -1;
case 'P':
return 1;
case 'S':
return 0;
}
}
return 0;
}
public void actionPerformed(ActionEvent e) {
char playerMove, computerMove;
if (rock.isSelected()) {
playerMove = 'R';
} else if (paper.isSelected()) {
playerMove = 'P';
} else // if (scissors.isSelected())
{
playerMove = 'S';
}
int k = (int) (Math.random() * 3);
computerMove = moves[k];
int result = nextPlay(computerMove, playerMove);
String msg = " You said " + makeWord(playerMove) + ", I said "
+ makeWord(computerMove);
if (result < 0) {
msg += " -- you win.";
} else if (result == 0) {
msg += " -- tie.";
} else // if (result > 0)
{
msg += " -- I win.";
}
display.setText(msg);
}
private String makeWord(char move) {
String word = "";
switch (move) {
case 'R':
word = "ROCK";
break;
case 'P':
word = "PAPER";
break;
case 'S':
word = "SCISSORS";
break;
}
return word;
}
public static void main(String[] args) {
Rps window = new Rps();
window.setBounds(300, 300, 300, 140);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
window.setVisible(true);
}
}